package ar.com.jsejtman.cajugastos2.core.entity;

import ar.com.jsejtman.common.domain.entity.Identifiable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Version;

/**
 * Clase que representa la entidad Empresa del modelo de negocio.
 * 
 * @author Pablo Lamas
 */
@Entity
@Table(name = "empresa")
public class Empresa implements Identifiable<Long> {

	/**
	 * Id de la empresa.
	 */
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name = "id")
	private Long id;

	/**
	 * Cuit de la empresa.
	 */
	@Column(name = "cuit")
	private String cuit;

	/**
	 * Razon social de la empresa.
	 */
	@Column(name = "razon_social")
	private String razonSocial;
	/**
	 * Versión de la entidad.
	 */
	@Column(name = "VERSION")
	@Version
	private Long version;

	/**
	 * Constructor por default de la empresa.
	 */
	public Empresa() {

	}

	/**
	 * Contructor de la empresa con parametros.
	 * 
	 * @param cuit de la empresa.
	 * @param razonSocial de la empresa.
	 */
	public Empresa(final String cuit, final String razonSocial) {

		this.cuit = cuit;
		this.razonSocial = razonSocial;
	}

	/**
	 * Devuelve el valor id de la empresa.
	 * 
	 * @return El valor del id.
	 */
	public final Long getId() {

		return this.id;
	}

	/**
	 * Devuelve el valor de cuit.
	 * 
	 * @return El valor de cuit.
	 */
	public final String getCuit() {

		return this.cuit;
	}

	/**
	 * Asigna un nuevo valor a cuit.
	 * 
	 * @param cuit El valor a asignar a cuit.
	 */
	public final void setCuit(final String cuit) {

		this.cuit = cuit;
	}

	/**
	 * Devuelve el valor de razonSocial.
	 * 
	 * @return El valor de razonSocial.
	 */
	public final String getRazonSocial() {

		return this.razonSocial;
	}

	/**
	 * Asigna un nuevo valor a razonSocial.
	 * 
	 * @param razonSocial El valor a asignar a razonSocial.
	 */
	public final void setRazonSocial(final String razonSocial) {

		this.razonSocial = razonSocial;
	}

	/**
	 * La version.
	 * 
	 * @return the version
	 */
	public final Long getVersion() {

		return this.version;
	}

	/**
	 * Asigna un nuevo valor a version.
	 * 
	 * @param version El valor a asignar a version.
	 */
	public final void setVersion(final Long version) {

		this.version = version;
	}
}
